package com.whfc.common.third.uni;

import lombok.Data;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 宇视科技配置类
 */
@Data
@Component
public class UniProperties {

    /**
     * 设备IP地址
     */
    private String ip;

    /**
     * 设备端口
     */
    private Integer port = 4311;

    /**
     * 用户名
     */
    private String username = "admin";

    /**
     * 密码
     */
    private String password;

    /**
     * 连接超时时间(毫秒)
     */
    private Integer connectTimeout = 5000;

    /**
     * 读取超时时间(毫秒)
     */
    private Integer readTimeout = 10000;

    /**
     * 事件回调服务器IP
     */
    private String eventDestIp;

    /**
     * 事件回调服务器端口
     */
    private Integer eventDestPort;

    /**
     * 事件回调URL路径
     */
    private String eventDestUrl = "/event/TIGA";

    /**
     * 事件类型订阅列表
     */
    private String[] eventTypes = { "MotionDetection", "HumanShapeDetection", "AudioDetection", "ObjectLeftBehind",
            "DeviceOffline" };

    /**
     * 定时重新订阅的时间间隔（分钟）
     */
    private Integer resubscribeInterval = 30;

    /**
     * 获取完整的事件回调地址
     */
    public String getEventDest() {
        return "http://" + eventDestIp + ":" + eventDestPort + eventDestUrl;
    }

    /**
     * 资源同步时所属部门ID
     */
    private Integer deptId;

    /**
     * 是否启用事件订阅
     */
    private Boolean enableEventSubscription = false;

    private Map<String, Integer> typeMapper = new HashMap<>();
    /**
     * 报警预览图片URL前缀
     */
    private String preUrlImage;

    /**
     * 获取订阅的事件类型数组
     */
    public String[] getEventTypesArray() {
        return eventTypes;
    }

    /**
     * 检查事件订阅配置是否完整
     */
    public boolean isEventSubscriptionConfigValid() {
        return enableEventSubscription &&
                eventDestIp != null &&
                eventDestPort != null &&
                eventTypes != null;
    }
}